Cryptography fundamentally comprises the processes of enciphering and deciphering messages so that their content is not readily accessible. These processes depend on particular algorithms, known as ciphers. A key is used in conjunction with a cipher to encipher and decipher messages. The key might appear meaningful, as would be the case with a character string used as a password, but this transformation is irrelevant—the functionality of a key lies in its being a string of bits determining the mapping of the plain text to the enciphered text. While protecting access to information is a major reason for using cryptographic systems, such systems are increasingly being used for identification of individuals and for authentication and non-repudiation.
One form of cryptographic identification/authentication is known as a digital signature. A digital signature is used to ensure that a message has been generated by a given individual and that the message received by an intended recipient is the message originally generated by the given individual. More specifically, hashing algorithms are a preferred mechanism used by digital signature systems to generate message “fingerprints” which are used to verify the authenticity of a message. One type of hashing algorithm, known as a one-way hashing algorithm, receives as input a message of arbitrary length and outputs a unique fixed length message known as a hash value or message digest. Although it is easy to determine a message digest given an input message and a one way hash algorithm, it is generally infeasible to determine an input message given the algorithm and the message digest. Moreover, hash algorithms are developed such that it is generally infeasible for random messages individually applied as inputs to a given hash algorithm to cause the generation of identical message digests. Consequently, message digests generated using one-way hashing algorithms are well suited for use as message fingerprints.
As the number of entities engaging in electronic transactions continues to increase so does the necessity for reliable and efficient cryptographic identification/authentication. Increases in the number of electronic transactions coupled with the use of computationally intensive identification/authentication mechanisms has resulted in proportionate increases in the need for additional computational resources. One method for satisfying this need is to develop more efficient algorithms such that additional/complex transactions may be supported using existing resources and without incurring the financial and other costs that would otherwise be unavoidable. The present application discloses a system and method for implementing a hashing algorithm.